﻿namespace Lesson_9_变长参数和参数默认值
{
    internal class Program
    {
        #region 知识点一 变长参数关键词
            //举例 函数要计算 n 个数的和
            //static int Sum(int a, int b,......)
            //变长参数关键字 params 可以让函数接收任意数量的参数

            static int Sum(params int[] arr)
            {
                int sum = 0;
                for (int i = 0; i < arr.Length; i++)
                {
                    sum += arr[i];
                }
                return sum;
            }

            //params int[] 意味着可以传入n个int参数 n可以等于0 传入的参数会存在arr数组中
            //注意：
            //1.params关键字后面必须为数组
            //2.数组的类型可以是任意的类型

            //3.函数参数可以有 别的参数和 params关键字修饰的参数
            //4.函数参数中只能最多出现一个params关键字 并且一定是在最后一组参数 前面可以有n个其它参数
            static void Eat( string name, int a, int b, params string[] toy)
            {

            }
        #endregion

        #region 知识点二 参数默认值  
        //有参数默认值的参数 一般称为可选参数
        //作用是 当调用函数时可以不传入参数 不传入就会使用默认值
        static void Speak(string str = "牛批")
        {
            Console.WriteLine(str);
        }
        #endregion

        //总结
        //1.params后面必须是数组 意味着只能是同一类型的可变参数
        //2.变长参数只能有一个
        //3.必须在所有参数最后写变长参数

        //1.可选参数可以有多个
        //2.正常参数比写在可选参数前面，可选参数只能写在所有参数的后面
        static void Main(string[] args)
        {
            Console.WriteLine("变长参数和参数默认值");

            Sum();
            Sum(1);
        }
    }
}
